草庐IT

Python float - str - 浮点怪异

全部标签

ruby - gsub 的怪异之处

我试图使用gsub删除Rails应用程序中字符串中的非单词字符。我使用了以下代码:somestring.gsub(/[\W]/i,'')#=>""但它实际上是不正确的,它也会删除字母k。正确的应该是:somestring.gsub(/\W/i,'')#=>"kkk"但我的问题是,使用rspec包含上述代码的RailsController的单元测试不起作用,单元测试实际上通过了。所以我在rspec中创建了一个非常极端的测试用例it"testthisgsub"do'kkk'.gsub(/[\W]/i,'').should=='kkk'end上面的测试用例应该失败,但实际上通过了。这里有什么

ruby 浮点错误

有人可以解释为什么在这里乘以100得到的结果不太准确,而两次乘以10得到的结果更准确吗?±%scLoadingdevelopmentenvironment(Rails3.0.1)>>129.95*10012994.999999999998>>129.95*101299.5>>129.95*10*1012995.0 最佳答案 如果您使用限制为53位有效位的double二进制手动进行计算,您将看到发生了什么:129.95=1.0000001111100110011001100110011001100110011001100110x2^7

ruby - 在 Ruby 中将唯一的种子字符串转换为随机但确定的浮点值

我在概念上遇到了困难。基本上,我需要接受一些任意的唯一字符串,并能够将其转换为规范化的浮点值。输出浮点值是什么并不重要,只要相同的字符串输入总是产生相同的规范化浮点输出即可。所以这是一个哈希算法,对吗?我熟悉SHA1或MD5,这似乎类似于密码散列,正确密码的结果相同。但是我相信那些方法会输出字符串。我没有得到的是如何将SHA1或MD5的结果转换为一致的浮点值。#Goaldefstring_to_float(seed_string)#...endstring_to_float('abc-123')#=>0.15789string_to_float('abc-123')#=>0.15789

Ruby - 将字符串转换为浮点返回 0.0

在一个变量中存储了这个值:$10.00我需要得到这个10.00我已尝试将此值转换为float:new_price='%.2f'%(price.to_f)但我只得到0.0。这有什么问题?我也试过了price=price.stripprice[0]=""new_price='%.2f'%(price.to_f)但即使这样也没有帮助我......哪里有问题?谢谢 最佳答案 您需要先删除$。整个事情是这样的:'%.2f'%'$10.00'.delete("$").to_f或'%.2f'%'$10.00'[1..-1].to_f如果你喜欢密度

ruby - Ruby 中的 str.each 不工作

我正在学习Ruby。我在http://ruby-doc.org/core/classes/String.html找到了方法String#each.当我尝试使用它时...irb(main):001:0>"hello\nworld".each{|s|ps}NoMethodError:undefinedmethod`each'for"hello\nworld":String...但我得到了NoMethodError。我使用的是Ruby1.9.1p253,所以我认为我使用的不是旧版本。怎么回事? 最佳答案 Ruby1.9在String类上不

ruby - Ruby 矩阵计算中的浮点错误

我正在编写一些涉及查找给定矩阵的特征向量的代码,令我惊讶的是Ruby在简单情况下会产生一些不合理的结果。例如,以下矩阵具有与特征值1关联的特征向量:>m=Matrix[[0r,1/2r,1/2r,1/3r],[0r,0r,1/4r,1/3r],[0r,1/4r,0r,1/3r],[1r,1/4r,1/4r,0r]]Ruby很好地找到了特征值,但是特征向量爆炸了:>m.eigen.eigenvalues[2]=>1.0000000000000009m.eigen.eigenvectors[2]=>Vector[5.957702309312754e+15,5.957702309312748

ruby-on-rails - 确定字符串是否为有效的浮点值

有没有一种方法可以简单地检查字符串值是否是有效的浮点值。如果字符串不是数值,则对字符串调用to_f会将其转换为0.0。使用Float()会在传递一个更接近我想要的无效浮点字符串时引发异常,但我不想处理捕获异常。我真正想要的是像nan这样的方法?它确实存在于Float类中,但这无济于事,因为如果不将非数字字符串更改为0.0(使用to_f),则无法将其转换为float。"a".to_f=>0.0"a".to_f.nan?=>falseFloat("a")=>ArgumentError:invalidvalueforFloat():"a"对此是否有简单的解决方案,或者我是否需要编写代码来检查

ruby - Ruby 中的 to_s 与 to_str(以及 to_i/to_a/to_h 与 to_int/to_ary/to_hash)

我正在学习Ruby,我看到了一些让我有点困惑的方法,特别是to_s与to_str(同样,to_i/to_int,to_a/to_ary,&to_h/to_hash).我读到的内容解释说,较短的形式(例如to_s)用于显式转换,而较长的形式用于隐式转换。我真的不明白to_str实际是如何使用的。to_str会定义字符串以外的东西吗?你能给出这个方法的实际应用吗? 最佳答案 首先请注意,所有这些都适用于每对“短”(例如to_s/to_i/to_a/to_h)与“long”(例如to_str/to_int/to_ary/to_hash)强

Ruby 字符串切片索引 : str[n. .infinity]

简单的问题,但在文档中找不到。如何将字符串或数组从n切到永远?>>'Austin'[1..3]=>"ust">>'Austin'[1..]SyntaxError:compileerror(irb):2:syntaxerror,unexpected']'from(irb):2 最佳答案 使用反向索引:[1..-1]Ruby(和其他一些语言)中的元素有直接索引和“反向”索引。因此,长度为n的字符串有0..(n-1)和额外的(-n)..-1索引,但仅此而已——您不能使用>=n或索引。'i''n'|'A''u''s''t''i''n'|'A

Firefox 和其他人之间的 Javascript 日期怪异

有谁知道为什么在Firefox中,如果您执行下面的代码,如果传入的字符串是四个数字且只有四个数字,它会将其验证为日期?在我测试过的所有其他浏览器(IE、Chrome)中,它总是返回为非日期。正像下面MarcelKorpel指出的那样,规范声明它应该回退到使用Firefox的特定实现的回退,我真的很想知道为什么Firefox的回退会显示这个异常。functionisDate(sDate){vartemp=newDate(sDate);if(temp.toString()=="NaN"||temp.toString()=="InvalidDate"){alert("NotaDate");}